<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 15-10-2014 ; 28-10-2014 ; 22-11-2014 ; 21-02-2015
class TiempoAsignableDivision extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra una tabla con todos los dias y periodos de un turno y si la division esta disponible o no en cada periodo de tiempo.
	//Filtros:
	//Si idTurno es igual a cero no mostramos ninguna tabla.
	//Si idTurno es distinto de cero, hay que mostrar la tabla. idTurno esta al ultimo ya que se va modificando al cambiar la seleccion en el filtro de turnos.
	function consultar($idDivision=null, $idCicloLectivo=null, $idCurso=null, $idTurno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idDivision pasado sea numerico y mayor que cero. Que idCicloLectivo, idCurso e idTurno sea mayor o igual que cero.
			if(is_numeric($idDivision) && $idDivision>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idTurno) && $idTurno>=0){
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division para corroborar que exista
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que la division pasada por la url sea existente. Lo mismo para el ciclo, turno y curso o que sean igual a cero.
				if(($division->num_rows() == 1) && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($curso->num_rows() == 1 || $idCurso==0) && ($turno->num_rows() == 1 || $idTurno==0)){
					//Le paso a la vista el id de la division
					$datos['idDivisionSel'] = $idDivision;
					
					//Le paso a la vista la division para que saque datos de ella
					$datos['divisionSel'] = $division;
					
					//Le paso a la vista el id del ciclo lectivo pasado por la url
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
														
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					//Le paso a la vista el id del turno para que lo seleccione en el combo de filtrado y otras cosas..
					$datos['idTurnoSel'] = $idTurno;
					
					//Le paso a la vista el turno para que saque datos de el
					$datos['turnoSel'] = $turno;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo el modelo donde estan los datos de los tiempos asignables registrados para utilizar sus funciones en la vista
					$this->load->model('m_tiempoasignabledivision');
					
					//Cargo la vista donde se muestra la tabla de tiempos asignables y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_tiempos_asignables_divisiones', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de las restricciones horarias
	function modificar($idDivision=null, $idTurno=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por url la division y turno de las restricciones a modificar. Estos deben ser numericos y mayor que cero.
			//Ademas que se haya pasado por post las disponibilidades por dia y periodo.
			if(is_numeric($idDivision) && $idDivision>0 && is_numeric($idTurno) && $idTurno>0){
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que existe
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que la division pasada por la url sea existente. Lo mismo para el turno.
				if($division->num_rows() == 1 && $turno->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los tiempos asignables registrados
					$this->load->model('m_tiempoasignabledivision');
					
					//Si el resultado al final es mayor que cero es porque algo se modifico
					$resultado = 0;
					
					//Recorremos el turno que nos pasaron por la url para verificar cada uno de los periodos por dia
					for($i=0;$i<$turno->row()->cantidadDePeriodos; $i++){
						for($j=1;$j<=$turno->row()->cantidadDeDias; $j++){
							$dispo = 0;
							if($this->input->post('ta_'.$j.'_'.$i,true) == "on"){
								$dispo = 1;
							}
							
							//Busco en la base de datos si ya se creo una restriccion para el dia y periodo actual
							$restriccion = $this->m_tiempoasignabledivision->get2($idDivision, $idTurno, $j, $i);
							
							//Ya esta creada la restriccion: la actualizo en la base de datos
							if($restriccion->num_rows() == 1){
								$resultado += $this->m_tiempoasignabledivision->modificar($restriccion->row()->idTiempoAsignable, $dispo ,1);
							//No esta creada la restriccion: la guardo en la base de datos
							} else {
								$resultado += $this->m_tiempoasignabledivision->crear($idDivision, $idTurno, $j, $i, $dispo,1, $this->session->userdata('idUsuarioLog'));							
							}
						}
					}
								
					if($resultado >= 1){
						echo("<script> alert('Las restricciones se han modificado correctamente.');</script>");
					}else{
						echo("<script> alert('Las restricciones no se han modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
}